import { ref } from 'vue'
import { defineStore } from 'pinia'
import { getUserInfo } from '@/api'

/**
 * 用户状态管理
 */
export const useUserStore = defineStore('user', () => {
  // 用户信息
  const userInfo = ref(null)
  
  // Token
  const token = ref(localStorage.getItem('token') || '')
  
  // 情侣关系信息
  const coupleInfo = ref(null)
  
  // 未读消息数量
  const unreadCount = ref(0)
  
  /**
   * 设置 Token
   */
  const setToken = (newToken) => {
    token.value = newToken
    localStorage.setItem('token', newToken)
  }
  
  /**
   * 设置用户信息
   */
  const setUserInfo = (info) => {
    userInfo.value = info
    localStorage.setItem('userInfo', JSON.stringify(info))
  }
  
  /**
   * 设置情侣关系信息
   */
  const setCoupleInfo = (info) => {
    coupleInfo.value = info
  }
  
  /**
   * 设置未读消息数量
   */
  const setUnreadCount = (count) => {
    unreadCount.value = count
  }
  
  /**
   * 获取用户信息（从服务器）
   */
  const fetchUserInfo = async () => {
    try {
      const res = await getUserInfo()
      setUserInfo(res.data)
      return res.data
    } catch (error) {
      console.error('获取用户信息失败：', error)
      throw error
    }
  }
  
  /**
   * 登出
   */
  const logout = () => {
    token.value = ''
    userInfo.value = null
    coupleInfo.value = null
    unreadCount.value = 0
    localStorage.removeItem('token')
    localStorage.removeItem('userInfo')
    // 清除"没有情侣关系"提示的标志
    sessionStorage.removeItem('hasShownNoCoupleMessage')
  }
  
  /**
   * 初始化用户信息（从 localStorage）
   */
  const initUserInfo = () => {
    const storedUserInfo = localStorage.getItem('userInfo')
    if (storedUserInfo) {
      try {
        userInfo.value = JSON.parse(storedUserInfo)
      } catch (error) {
        console.error('解析用户信息失败：', error)
      }
    }
  }
  
  // 初始化
  initUserInfo()
  
  return {
    userInfo,
    token,
    coupleInfo,
    unreadCount,
    setToken,
    setUserInfo,
    setCoupleInfo,
    setUnreadCount,
    fetchUserInfo,
    logout
  }
})

